The @[x] directive is like the inverse of the @quote directive. It outputs the result of macro expanding the result of macro expanding x (i.e. macro expansions are applied twice). It follows that @[@quote(y)] is equivalent to y.
In the example below, the expression v@@1 has managed to defeat the macro expander (i.e. preventing invocation of v1), but the @[] directive is able to force the macro substitution to take place anyway.
Before translation | After translation |
---|---|
|
|
Another example:
Before translation | After translation |
---|---|
|
|